﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MJM.CBD.Conn;
using MJM.SPP.EntidadesNegocio;
using System.Data;
using System.Data.SqlClient;

namespace MJM.SPP.AccesoDatos
{
    public class GrupxUsuAD
    {
        public int Insertar(GrupxUsuEN obj)
        {
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_i_T_WEB_USUASI_Insertar",conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmIDGrupo,prmIDPersona,prmID;
            int codigo=0;
            try
            {
                prmIDGrupo=cmd.CreateParameter();
                prmIDGrupo.ParameterName = "@vUSUGRU_P_inID";
                prmIDGrupo.SqlDbType=SqlDbType.Int;
                prmIDGrupo.Value=obj.USUGRU_P_inID;
                cmd.Parameters.Add(prmIDGrupo);

                prmIDPersona=cmd.CreateParameter();
                prmIDPersona.ParameterName = "@vUSUPAD_P_chUSU";
                prmIDPersona.SqlDbType=SqlDbType.VarChar;
                prmIDPersona.Value=obj.USUPAD_P_chUSU;
                cmd.Parameters.Add(prmIDPersona);

                prmID=cmd.CreateParameter();
                prmID.Direction=ParameterDirection.ReturnValue;
                prmID.SqlDbType=SqlDbType.Int;
                cmd.Parameters.Add(prmID);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                codigo=Convert.ToInt32(prmID.Value);
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            { 
                cmd.Dispose();
                conn.Dispose();
            }
            return codigo;
        }

        public List<GrupxUsuEN> Listar(String IDPersona)
        {
            List<GrupxUsuEN> lst = new List<GrupxUsuEN>();
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_WEB_USUASI_Listar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmIDPersona;
            SqlDataReader dr;
            try
            {
                prmIDPersona = cmd.CreateParameter();
                prmIDPersona.ParameterName = "@vUSUPAD_P_chUSU";
                prmIDPersona.SqlDbType = SqlDbType.VarChar;
                prmIDPersona.Value = IDPersona;
                cmd.Parameters.Add(prmIDPersona);

                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                GrupxUsuEN obj;
                int cont = 1;
                while (dr.Read())
                {
                    obj = new GrupxUsuEN();
                    obj.NombreGrupo = dr.GetString(5);
                    obj.USUASI_inFLAELI = dr.GetInt32(3);
                    obj.USUASI_P_inID = dr.GetInt32(0);
                    obj.USUGRU_P_inID = dr.GetInt32(1);
                    obj.USUPAD_P_chUSU = dr.GetString(2);
                    obj.DescripcionGrupo = dr.GetString(6);
                    obj.Numero = cont;
                    lst.Add(obj);
                    cont++;
                }
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return lst;
        }

        public int Modificar(GrupxUsuEN obj)
        {
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_u_T_WEB_USUASI_Modificar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmIDGrupo, prmIDAsignacion, prmEliminado;
            int codigo = 0;
            try
            {
                prmIDGrupo = cmd.CreateParameter();
                prmIDGrupo.ParameterName = "@vUSUGRU_P_inID";
                prmIDGrupo.SqlDbType = SqlDbType.Int;
                prmIDGrupo.Value = obj.USUGRU_P_inID;
                cmd.Parameters.Add(prmIDGrupo);

                prmIDAsignacion = cmd.CreateParameter();
                prmIDAsignacion.ParameterName = "@vUSUASI_P_inID";
                prmIDAsignacion.SqlDbType = SqlDbType.Int;
                prmIDAsignacion.Value = obj.USUASI_P_inID;
                cmd.Parameters.Add(prmIDAsignacion);

                prmEliminado = cmd.CreateParameter();
                prmEliminado.ParameterName = "@vUSUASI_inFLAELI";
                prmEliminado.SqlDbType = SqlDbType.Int;
                prmEliminado.Value = obj.USUASI_inFLAELI;
                cmd.Parameters.Add(prmEliminado);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                codigo = 1;
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();                
            }
            return codigo;
        }

        public int ActualizarGrupoDefectoWeb(GrupxUsuEN obj,int tipo)
        {
            int codigo = 0;
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_u_ActualizaGrupoxDefecto", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmIDGrupo,prmTipo;
            
            try
            {
                prmTipo = cmd.CreateParameter();
                prmTipo.ParameterName = "@vTipo";
                prmTipo.SqlDbType = SqlDbType.Int;
                prmTipo.Value = tipo;
                cmd.Parameters.Add(prmTipo);

                prmIDGrupo = cmd.CreateParameter();
                prmIDGrupo.ParameterName = "@vGrupo";
                prmIDGrupo.SqlDbType = SqlDbType.VarChar;
                prmIDGrupo.Value = obj.USUGRU_P_inID.ToString();
                cmd.Parameters.Add(prmIDGrupo);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
                codigo = 1;
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                codigo = 0;
            }

            return codigo;
        }

        public int ObtenerGrupoDefecto(int tipo)
        {
            int codigo = 0;
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_ObtenerGrupoxDefecto", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader dr;
            SqlParameter prmTipo;
            try
            {
                prmTipo = cmd.CreateParameter();
                prmTipo.ParameterName = "@vTipo";
                prmTipo.SqlDbType = SqlDbType.Int;
                prmTipo.Value = tipo;
                cmd.Parameters.Add(prmTipo);

                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                
                if (dr.Read())
                {
                    codigo = Convert.ToInt32(dr.GetString(0));
                }

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                codigo = 0;
            }

            return codigo;
        }
    }
}
